Class RedbProjectedQueryable<TProps, TResult>

Namespace: redb.Core.Query
Assembly: redb.Core.dll

Implementation of LINQ query projections in REDB with filtering and sorting support
⭐ OPTIMIZED: Uses ProjectionFieldExtractor to load only required fields

public class RedbProjectedQueryable<TProps, TResult> : IRedbProjectedQueryable<TResult> where TProps : class, new()

Inheritance

ObjectRedbProjectedQueryable<TProps, TResult>

Implements

Properties

ProjectedFieldPaths

⭐ Text field paths for SQL function search_objects_with_projection_by_paths

public List<string>? ProjectedFieldPaths { get; }

ProjectedStructureIds

⭐ Extracted structure_ids for optimization (for provider access)

public HashSet<long>? ProjectedStructureIds { get; }

Projection

⭐ Projection expression (for provider access)

public Expression<Func<RedbObject<TProps>, TResult>> Projection { get; }

Methods

CountAsync()

Count results.

public Task<int> CountAsync()

Distinct()

Distinct values.

public IRedbProjectedQueryable<TResult> Distinct()

FirstOrDefaultAsync()

Get first result or default value.

public Task<TResult?> FirstOrDefaultAsync()

GetProjectionInfoAsync()

Get projection info: SQL function and structure_ids that will be loaded.

public Task<string> GetProjectionInfoAsync()

OrderBy<TKey>(Expression<Func<TResult, TKey>>)

Sort projected results.

public IRedbProjectedQueryable<TResult> OrderBy<TKey>(Expression<Func<TResult, TKey>> keySelector)

OrderByDescending<TKey>(Expression<Func<TResult, TKey>>)

Sort projected results descending.

public IRedbProjectedQueryable<TResult> OrderByDescending<TKey>(Expression<Func<TResult, TKey>> keySelector)

Skip(int)

Skip results.

public IRedbProjectedQueryable<TResult> Skip(int count)

Take(int)

Limit number of results.

public IRedbProjectedQueryable<TResult> Take(int count)

ToListAsync()

Execute query and get list of results.

public Task<List<TResult>> ToListAsync()

Where(Expression<Func<TResult, bool>>)

Additional filtering of projected results.

public IRedbProjectedQueryable<TResult> Where(Expression<Func<TResult, bool>> predicate)

Constructors